home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xtartan-2.0 / setrootbg.c < prev    next >
C/C++ Source or Header  |  1995-05-24  |  1KB  |  47 lines

  1. /* setrootbg.c - makes the current root background permanent.
  2.  * A modularized version of the function from the xsetroot program.
  3.  *
  4.  * 24.Oct.89  jimmc  Initial definition (borrowed from xsetroot)
  5.  *  9.Jan.91  jimmc  Pass dpy info as args instead of globals
  6.  */
  7.  
  8. #include <X11/Xlib.h>
  9. #include <X11/Xatom.h>
  10.  
  11. #define Dynamic 1
  12.  
  13. setrootbg(TDisplay,TScreen,TRootWindow,TDrawable)
  14. Display *TDisplay;
  15. Screen *TScreen;
  16. Window TRootWindow;
  17. Drawable TDrawable;
  18. {
  19.     Atom prop,type;
  20.     int format;
  21.     unsigned long length,after;
  22.     unsigned char *data;
  23.  
  24.     /* for root window, get rid of old root pixmap and colors
  25.      * and save new pixmap and colors.
  26.      * (this code borrowed from xsetroot)
  27.      */
  28.     if (DefaultVisualOfScreen(TScreen)->class & Dynamic) {
  29.         prop = XInternAtom(TDisplay,"_XSETROOT_ID",False);
  30.         XGetWindowProperty(TDisplay,TRootWindow,prop,0L,1L,True,
  31.             AnyPropertyType,
  32.             &type,&format,&length,&after,&data);
  33.         if ((type == XA_PIXMAP) && (format == 32) &&
  34.             (length == 1) && (after == 0))
  35.             XKillClient(TDisplay, *((Pixmap *)data));
  36.                 /* zap old colors */
  37.         else if (type != None)
  38.             Warn("_XSETROOT_ID property is garbage");
  39.         /* save colors used in pixmap */
  40.         XChangeProperty(TDisplay,TRootWindow,prop,XA_PIXMAP,32,
  41.             PropModeReplace,(unsigned char *)&TDrawable,1);
  42.         XSetCloseDownMode(TDisplay, RetainPermanent);
  43.     }
  44. }
  45.  
  46. /* end */
  47.